Applications are executed by a processor whose execution is controlled by an operating system. The operating system interfaces directly with the hardware components of the processor and the hardware components coupled to the processor. In this configuration, if another operating system, such as another instance of an operating system, is needed, another processor and hardware components would be added to the configuration.
In an attempt to reduce the costs, particularly hardware costs, some systems employ virtualization techniques by sharing the hardware with multiple instances of an operating system. In one such system, provides a host operating system that runs multiple instances of child operating systems with which user programs interface. Virtualization is performed by a host process, referred to as a hypervisor, and utilizes a significant amount of system support and software emulation of hardware. The hypervisor is largely written for a specific operating system and utilizes limited hardware support for virtualization, but allows multiple instances of child operating systems to share a single processor and virtualized hardware resources. The hypervisor may also isolate the applications from one another, such that a failure in one application does not necessary cause a failure in the other applications or the hardware platform. In this type of system, the hypervisor is a software module that interfaces between the operating system and the hardware, e.g., the processor.
In some implementations, the system is based on a group of central processing units (CPUs) that operate in a symmetric multi-processing environment. In these implementations, a software module exists on each CPU that acts as an interface between the operating system and the respective hardware elements. These implementations provide a symmetric multi-processing environment.